package com.shopoo.oauth.api;

import com.shopoo.dto.PageResponse;
import com.shopoo.dto.Response;
import com.shopoo.dto.SingleResponse;
import com.shopoo.oauth.dto.clientobject.RoleDetailDTO;
import com.shopoo.oauth.dto.clientobject.RoleRespDTO;
import com.shopoo.oauth.dto.cqe.RoleAddCmd;
import com.shopoo.oauth.dto.cqe.RolePowerUpdateCmd;
import com.shopoo.oauth.dto.cqe.RoleQuery;
import com.shopoo.oauth.dto.cqe.RoleUpdateCmd;

/**
 * 角色表(TSystemRole)表服务接口
 *
 * @author makejava
 * @since 2020-05-23 10:00:45
 */
public interface RoleService {

    /**
     * @Description: 根据用户ID查找用户角色信息
     * @Author: limy66
     * @Date:   2021/3/16 17:28
     * @Param:  [userId]
     * @Return: com.bngrp.system.dto.role.RoleRespDTO
     */
    SingleResponse<RoleRespDTO> findByUserId(String userId);

    /**
     * @Description: 根据角色Id查找角色详情信息
     * @Author: limy66
     * @Date:   2021/5/18 11:11
     * @Param:  [roleId]
     * @Return: com.bngrp.system.application.role.dto.RoleDetailDTO
     */
    SingleResponse<RoleDetailDTO> findByRoleId(Long roleId);

    /**
     * 更新权限
     * @param rolePowerUpdateCmd
     * @Return void
     * @Date: 2022/3/17 1:57 AM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */
    Response updatePower(RolePowerUpdateCmd rolePowerUpdateCmd);

    /**
     * 缓存角色的菜单权限
     * @param 
     * @Return void
     * @Date: 2022/3/17 1:57 AM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */
    Response cacheAllRoleMenus();

    /**
     * 更新角色信息
     * @param roleUpdateCmd
     * @Return void
     * @Date: 2022/3/17 1:57 AM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */
    Response update(RoleUpdateCmd roleUpdateCmd);

    /**
     * @Description: 删除角色
     * @Author: limy66
     * @Date:   2021/5/25 18:51
     * @Param:  [roleId]
     * @Return: void
     */
    Response delete(Long roleId);

    /**
     * 添加角色
     * @param roleAddCmd
     * @Return void
     * @Date: 2022/3/17 1:58 AM
     * @Author: <a href="mailto:android_li@sina.cn">MaoYuan.Li</a>
     */
    Response save(RoleAddCmd roleAddCmd);

    /**
     * @Description: 分页查找角色信息
     * @Author: limy66
     * @Date:   2021/5/12 13:54
     * @Param:  [roleQuery]
     * @Return: com.github.pagehelper.PageInfo
     */
    PageResponse findByConditions(RoleQuery roleQuery);

}